#include "BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h"
#ifdef __cplusplus
extern "C" {
#endif
btSphereBoxCollisionAlgorithm::CreateFunc* bullet_NewbtSphereBoxCollisionAlgorithmCreateFunc(){
	btSphereBoxCollisionAlgorithm::CreateFunc* wrap_out = new btSphereBoxCollisionAlgorithm::CreateFunc();
	return wrap_out;
}

btSphereBoxCollisionAlgorithm* bullet_NewbtSphereBoxCollisionAlgorithm(btPersistentManifold* mf,btCollisionAlgorithmConstructionInfo* ci,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap,bool isSwapped){
	btPersistentManifold * c_arg_mf=(btPersistentManifold *)(void*)(mf);
	btCollisionAlgorithmConstructionInfo const& c_arg_ci=(btCollisionAlgorithmConstructionInfo const&)(*ci);
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	bool c_arg_isSwapped=isSwapped;
	btSphereBoxCollisionAlgorithm* wrap_out = new btSphereBoxCollisionAlgorithm(c_arg_mf,c_arg_ci,c_arg_body0Wrap,c_arg_body1Wrap,c_arg_isSwapped);
	return wrap_out;
}

bool bullet_btSphereBoxCollisionAlgorithm_getSphereDistance(btSphereBoxCollisionAlgorithm* c_this,btCollisionObjectWrapper* boxObjWrap,btVector3* v3PointOnBox,btVector3* normal,double* penetrationDepth,btVector3* v3SphereCenter,double fRadius,double maxContactDistance){
	btCollisionObjectWrapper const * c_arg_boxObjWrap=(btCollisionObjectWrapper const *)(void*)(boxObjWrap);
	btVector3& c_arg_v3PointOnBox=(btVector3&)(*v3PointOnBox);
	btVector3& c_arg_normal=(btVector3&)(*normal);
	btScalar& c_arg_penetrationDepth=(btScalar&)(*penetrationDepth);
	btVector3 const& c_arg_v3SphereCenter=(btVector3 const&)(*v3SphereCenter);
	btScalar c_arg_fRadius=fRadius;
	btScalar c_arg_maxContactDistance=maxContactDistance;
	bool c_out = c_this->getSphereDistance(c_arg_boxObjWrap,c_arg_v3PointOnBox,c_arg_normal,c_arg_penetrationDepth,c_arg_v3SphereCenter,c_arg_fRadius,c_arg_maxContactDistance);
	bool wrap_out = (c_out);
	return wrap_out;
}

double bullet_btSphereBoxCollisionAlgorithm_getSpherePenetration(btSphereBoxCollisionAlgorithm* c_this,btVector3* boxHalfExtent,btVector3* sphereRelPos,btVector3* closestPoint,btVector3* normal){
	btVector3 const& c_arg_boxHalfExtent=(btVector3 const&)(*boxHalfExtent);
	btVector3 const& c_arg_sphereRelPos=(btVector3 const&)(*sphereRelPos);
	btVector3& c_arg_closestPoint=(btVector3&)(*closestPoint);
	btVector3& c_arg_normal=(btVector3&)(*normal);
	btScalar c_out = c_this->getSpherePenetration(c_arg_boxHalfExtent,c_arg_sphereRelPos,c_arg_closestPoint,c_arg_normal);
	double wrap_out = (c_out);
	return wrap_out;
}

#ifdef __cplusplus
}
#endif
